#ifndef AST_EXTERNAL_DEFINITIONS_DECLARATION_LIST_H
#define AST_EXTERNAL_DEFINITIONS_DECLARATION_LIST_H

#include "../ASTNode.h"

class Declaration;
/*
(C99 6.9.1)
declaration-list:
		declaration
		declaration-list	declaration
*/
class DeclarationList : public ASTNode
{
protected:
	DeclarationList() 
		:ASTNode(ASTNode::declaration_list), m_pDeclaration(NULL), m_pDList(NULL){};
public:
	DeclarationList(DeclarationList * pDList, Declaration *pDeclaration)
		: ASTNode(ASTNode::declaration_list), m_pDList(pDList), m_pDeclaration(pDeclaration){};
	DeclarationList(Declaration *pDeclaration)
		: ASTNode(ASTNode::declaration_list), m_pDList(NULL), m_pDeclaration(pDeclaration){};
	
	virtual ~DeclarationList();

	virtual void						codeGen();	

protected:
	DeclarationList *	m_pDList;
	Declaration *		m_pDeclaration;
};
#endif

